package com.ssyan.sort;

/*
    冒泡排序：找出最大值放置最后一位，次次大值放置次末位，依次类推
    时间复杂度：O(n^2)
    排序稳定性：稳定
 */
public class Bubble {


    /*
        对数组a中的元素进行排序
     */
    public static void sort(Comparable[] a) {
        for (int i=a.length-1; i>0; i--) {
            for (int j = 0; j < i; j++) {
                //比较索引j和索引j+1处的值
                if (greater(a[j],a[j+1])) {
                    exch(a,j,j+1);
                }
            }
        }
    }

    /*
        比较元素是否大于w元素
     */
    private static boolean greater(Comparable v,Comparable w) {

        return v.compareTo(w)>0;
    }

    /*
        数组元素i和j交换位置
     */
    private static void exch(Comparable[] a,int i,int j) {
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}
